package acm.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class TT {
    public static void main(String[] args) {
        List<Object> list=new ArrayList<>();

    }

    Map<Integer,Good> redis;

    //goods：订单中的所有商品
    public boolean stock(List<Good> goods){

        //从Redis中获取商品对应的库存
        for (Good good : goods) {
            synchronized (good){
                Good redisGood = redis.get(good.id);
                if (redisGood.stock<good.stock){
                    //回滚 + 抛出异常
                }
                //这里不会有线程安全问题吗
                redisGood.stock-=good.stock;
                redis.put(good.id,redisGood);   //更新redis中的商品
            }
        }
        try {
            for (Good good : goods) {
                //更新数据库中的商品
            }
        }catch (Exception e){
            //回滚
        }
        return true;
    }

    static class Good{
        int id;
        int stock;
    }
}
